テクニカル Q&A
QD60 - ネイティブ QuickDraw ハードウェアアクセラレータの
notSrcCopy 動作 (1999 年 6 月 28 日)
Q: ネイティブ QuickDraw (NQD)
ハードウェアアクセラレータ (HWA) の notSrcCopy
ビット転送演算 (blit) の処理方法を教えてください。
A: NQD HWA ハンドラは、すべての notSrcCopy
演算を、以下で説明するように、ハードウェアアクセラレータの適切なビット転送機能に送出します。
notSrcCopy 動作を理解する鍵は、QuickDraw
が色深度とカラーテーブルのマッチング結果に応じて、次の 3
つの処理のうちの 1 つを行うということです。
- 色深度 (8 ビット/ピクセルの場合はカラーテーブルも)
が等しい場合は、直接ビット転送機能に送られて、ビット演算が行われます。
- 色深度 (またはカラーテーブル) が異なり、コピー元が 16
ビット/ピクセル以上だと、ビット転送演算は、notSrcCopy
モード指定でスケールビット転送機能へ送られます。このとき、bMustScale
が 0 に設定され、scaleTable は無効 (NULL とは限らない)
です。アクセラレータのデベロッパは、Color QuickDraw
の標準規則にしたがって、コピー元に notSrcCopy
演算を施し、コピー先に正しい色を生成しなければなりません
(コピー先が 8
ビット/ピクセルの場合は反転カラーテーブルを用いること)。
- 色深度 (またはカラーテーブル) が異なり、コピー元が 8
ビット/ピクセル以下だと、ビット転送演算は、srcCopy
モード指定でスケールビット転送機能へ送られます。このとき、bMustScale
が 1 に設定され、scaleTable
は有効です。スケールテーブルには、コピー元が 1
ビットの場合は 2 つの要素が、8 ビット/ピクセルの場合は
256
個の要素が含まれます。各要素は、コピー元の各インデックスに対応する
(コピー先のビット深度を持つ)
カラー値またはインデックス値です。コピー先が 16
ビット/ピクセルまたは 32
ビット/ピクセルの場合、アルファビットはゼロになります
(つまり、白はそれぞれ、16 ビット/ピクセルの場合は
0x7FF、32 ビット/ピクセルの場合は
0x00FFFFFF)。この場合、ビット転送機能はこのテーブルを使って直接コピー元のピクセルをコピー先のピクセルにマッピングできます。
注意 : どのモードでも scaleTableIsRGBTable
フィールドは常に 0 です。scaleTable
ポインタを使用すべきかどうかは bMustScale
を参照して判断してください。スケールテーブルの各エントリには、コピー先のビット深度に応じた
RGB
カラーまたはカラーインデックスが格納されていると仮定してください。
-- Geoff Stahl
Worldwide Developer Technical Support
テクニカル Q&A | 目次
To contact us, please use the Contact
Us page.
|